\myindex{\CStandardLibrary!strlen()}
\myindex{\CStandardLibrary!memchr()}
\myindex{x86!\Instructions!SCASB}
\myindex{x86!\Instructions!SCASW}
\myindex{x86!\Instructions!SCASD}
\myindex{x86!\Instructions!SCASQ}
\item[SCASB/SCASW/SCASD/SCASQ] (M) \RU{сравнить}\EN{compare} \RU{байт}\EN{byte}/
16-\RU{битное слово}\EN{bit word}/
32-\RU{битное слово}\EN{bit word}/
64-\RU{битное слово,}\EN{bit word} \RU{записанное в}\EN{that's stored in}
AX/EAX/RAX \RU{со значением, адрес которого находится
в}\EN{with a variable whose address is in} DI/EDI/RDI.
\RU{Выставить флаги так же, как это делает \CMP}\EN{Set flags as \CMP does}.

\label{REPNE_SCASx}
\myindex{x86!\Prefixes!REPNE}
\RU{Эта инструкция часто используется с префиксом REPNE: продолжать сканировать буфер до тех
пор, пока не встретится специальное значение, записанное в AX/EAX/RAX}
\EN{This instruction is often used with the REPNE prefix: continue to scan the buffer until a special value
stored in AX/EAX/RAX is found}.
\RU{Отсюда \q{NE} в REPNE: продолжать сканирование если сравниваемые значения не равны и остановиться
если равны}
\EN{Hence \q{NE} in REPNE: continue to scan while the compared values are not equal and stop when equal}.

\RU{Она часто используется как стандартная функция Си strlen(), для определения длины \ac{ASCIIZ}-строки}
\EN{It is often used like the strlen() C standard function, to determine an \ac{ASCIIZ} string's length}:

\RU{Пример}\EN{Example}:

\EN{\lstinputlisting[style=customasmx86]{appendix/x86/instructions/SCASB_ex1_EN.asm}}
\RU{\lstinputlisting[style=customasmx86]{appendix/x86/instructions/SCASB_ex1_RU.asm}}

\RU{Если использовать другое значение AX/EAX/RAX, функция будет работать как стандартная функция Си memchr(),
т.е. для поиска определенного байта.}
\EN{If we use a different AX/EAX/RAX value, the function acts like the memchr() standard C function, i.e.,
it finds a specific byte.}

